package com.leased.service.impl;

import com.leased.exception.DatabaseException;
import com.leased.mapper.UserLoginLimitMapper;
import com.leased.pojo.UserLoginLimit;
import com.leased.pojo.UserLoginLimitExample;
import com.leased.service.UserLoginLimitService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * Created by shencx on 2017/7/28.
 */
@Service
public class UserLoginLimitServiceImpl implements UserLoginLimitService{

    Logger LOG = LoggerFactory.getLogger(UserLoginLimitServiceImpl.class);

    @Resource
    private UserLoginLimitMapper userLoginLimitMapper;

    /**
     * 添加权限
     * @param userLoginLimit
     * @return
     * @throws DatabaseException
     */
    @Override
    public Integer addUserLoginLimitInfo(UserLoginLimit userLoginLimit) throws DatabaseException {
        try {
            if (userLoginLimit == null){
                LOG.error("addUserLoginLimitInfo 信息为空",userLoginLimit);
                return Integer.valueOf(0);
            }
            userLoginLimit.setCreateTime(new Date());
            int val = userLoginLimitMapper.insertSelective(userLoginLimit);
            if (val > 0){
                return userLoginLimit.getId();
            }else {
                return Integer.valueOf(0);
            }
        }catch (Throwable e) {
            LOG.error("addUserLoginLimitInfo 发生异常",e,userLoginLimit);
            throw new DatabaseException(e.getMessage());
        }
    }

    /**
     * 修改权限
     * @param userLoginLimit
     * @return
     * @throws DatabaseException
     */
    @Override
    public boolean updateUserLoginLimitInfo(UserLoginLimit userLoginLimit) throws DatabaseException {
        try {
            if (userLoginLimit == null){
                LOG.error("updateUserLoginLimitInfo 信息为空",userLoginLimit);
                return false;
            }
            Integer val = userLoginLimitMapper.updateByPrimaryKeySelective(userLoginLimit);
            return val>0?true:false;
        }catch (Throwable e) {
            LOG.error("updateUserLoginLimitInfo 发生异常",e,userLoginLimit);
            throw new DatabaseException(e.getMessage());
        }
    }

    /**
     * 获取开通平台权限
     * @param userId
     * @param userType
     * @return
     * @throws DatabaseException
     */
    @Override
    public List<UserLoginLimit> fetchUserLoginLimitList(Integer userId, Integer userType) throws DatabaseException {
        try {
            if (userId == null){
                LOG.error("fetchUserLoginLimitList 用户主键为空",userId);
                return null;
            }
            UserLoginLimitExample example = new UserLoginLimitExample();
            UserLoginLimitExample.Criteria criteria = example.createCriteria();
            criteria.andUserIdEqualTo(userId);
            criteria.andUserTypeEqualTo(userType);
            List<UserLoginLimit> list = userLoginLimitMapper.selectByExample(example);
            return list;
        } catch (Throwable e) {
            LOG.error("fetchUserLoginLimitList 发生异常",e,userId);
            throw new DatabaseException(e.getMessage());
        }
    }
}
